A server computer may host application programs remotely accessed by client computers. Terminal service platforms, such as Windows® Server 2003 operating system provided by the Microsoft Corporation, is one implementation of such technology, where application programs run on a central server while a user interface is presented on a remote computer. The user interface in implementations such as this can include complex graphics.
The central server computer is referred to as a host computer or terminal server. The remote computer is referred to as a remote terminal or remote client, and communicates with the server through a communications medium such as a network. Bandwidth over such a communications medium is often limited.
Applications programs are typically designed to operate in conjunction with a local display device or monitor. In many operating systems, such as the Windows® Server 2003 operating system, application programs send relatively high-level graphics commands or primitives to operating system components. Such commands might specify or define colors, lines, shapes, and other graphics constructs. The operating system components interpret or convert such high-level commands into lower-level graphics information such as individual pixel values or bitmaps. Such a process of converting from a relatively high-level graphics specification to a relatively lower-level graphics specification will be referred to herein as rendering.
When operating on a terminal server, an application program can utilize the same operating system components to render low-level graphics data from higher-level commands or primitives. In this situation, however, the operating system components are configured to provide the rendered lower-level graphics commands to a remote client, which utilizes this information to control its display device.
When serving several remote computers, graphics data such as that described above can easily create network congestion. Because of this, attempts are made to optimize and/or compress the lower-level graphics data sent to the client. In some cases, however, such optimization and compression degrades the quality or resolution of the display data. Typically this is not a problem with simple media graphics; however, with rich media graphics having significantly more content, optimized and/or compressed graphics data may not adequately represent what was intended by the application program.
An option is to increase network bandwidth to allow uncompromised lower-level graphics data to be sent to clients. However, increasing network bandwidth adds expense and is not always feasible.
Furthermore, due to their relatively large content as compared to simple graphics, rich media graphics require greater server processing resources than simple graphics. As the server CPU requirements (i.e., CPU cycles) for each client session increases, the overall server scalability is reduced, where scalability is defined as the number of high fidelity concurrent connections to client computers the server can support. Thus the server is able to support fewer client computers.